package org.alvin.opsdev.desktop.system.appicons;

import org.alvin.opsdev.webos.commom.Page;
import org.alvin.opsdev.webos.commom.app.appicons.AppIcons;
import org.alvin.opsdev.webos.commom.app.appicons.AppIconsCond;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.stream.Collectors;

/**
 * @类说明:应用程序图标数据逻辑层
 * @author:高振中
 * @date:2018-05-12 16:51:08
 **/
@Service
public class AppIconsService {
	@SuppressWarnings("unused")
	private Log logger = LogFactory.getLog(getClass());
	@Autowired
	private AppIconsDao dao; //注入应用程序图标数据访问层

	@Value("${img.server}")
	private String imgServer;
	@Value("${img.folder_icon}")
	private String folder_icon;

	/**
	 * @方法说明:新增应用程序图标记录
	 **/
	@Transactional
	public int save(AppIcons appIcons) {
		//文件夹处理
		if (appIcons.getType().intValue() == 4) {
			appIcons.setIcon(imgServer.concat(folder_icon));
		}
		return dao.save(appIcons);
	}

	/**
	 * @方法说明:删除应用程序图标记录(多条)
	 **/
	public int delete(Long ids[]) {
		//return dao.deleteLogic(ids);//逻辑删除
		return dao.delete(ids);//物理删除
	}

	/**
	 * @方法说明:按ID查找单个应用程序图标记录
	 **/
	public AppIcons findById(Long id) {
		return dao.findById(id);
	}

	/**
	 * @方法说明:更新应用程序图标记录
	 **/
	@Transactional
	public int update(AppIcons appIcons) {
		return dao.update(appIcons);
	}

	/**
	 * @方法说明:按条件查询分页应用程序图标列表
	 **/
	public Page<AppIcons> queryPage(AppIconsCond cond) {
		return dao.queryPage(cond);
	}

	/**
	 * @方法说明:按条件查询不分页应用程序图标列表(使用范型)
	 **/
	public List<AppIcons> queryList(AppIconsCond cond) {
		return dao.queryList(cond);
	}

	/**
	 * @方法说明:按条件查询应用程序图标记录个数
	 **/
	public long queryCount(AppIconsCond cond) {
		return dao.queryCount(cond);
	}

	/**
	 * 获取侧边条app
	 *
	 * @param id
	 * @return
	 */
	public List<AppIcons> sidebarApps(Long id) {
		//目前是固定的 5个
		AppIconsCond appIconsCond = new AppIconsCond();
		appIconsCond.setType((byte) 2);
		appIconsCond.setStatus((byte) 1);
		return this.dao.queryList(appIconsCond);
	}

	/**
	 * 获取鱼眼球菜单
	 *
	 * @param id
	 * @return
	 */
	public List<AppIcons> fishEyeApps(Long id) {
		//目前是固定的 8个
		AppIconsCond appIconsCond = new AppIconsCond();
		appIconsCond.setType((byte) 1);
		appIconsCond.setStatus((byte) 1);
		List<AppIcons> fishEyes = this.dao.queryList(appIconsCond);
		//查询子菜单
		appIconsCond.setType((byte) 3);
		List<AppIcons> subMenus = this.dao.queryList(appIconsCond);
		return fishEyes.stream().map(item -> {
			item.setApps(subMenus.stream().filter(subM -> subM.getParent_id().equals(item.getId())).collect(Collectors.toList()));
			return item;
		}).collect(Collectors.toList());
	}
}